/*
 * pilha.c
 *
 *  Created on: Nov 24, 2011
 *      Author: Fernando
 */

#include <stdlib.h>
#include <string.h>
#include "pilha.h"

void push(Pilha** pilha, const char* valor) {
	char* copiaValor = (char*) malloc((strlen(valor) + 1) * sizeof(char));
	strcpy(copiaValor, valor);
	Pilha* pNovoElemento = (Pilha*) malloc(sizeof(Pilha));
	pNovoElemento->elementoAtual = copiaValor;
	pNovoElemento->proximo = *pilha;
	*pilha = pNovoElemento;
}

char* pop(Pilha** pilha) {
	char* valor = (*pilha)->elementoAtual;
	*pilha = (*pilha)->proximo;
	return valor;
}

char* peek(Pilha** pilha) {
	if (*pilha != NULL)
		return (*pilha)->elementoAtual;
	else
		return NULL;
}

int isStackEmpty(Pilha* pilha) {
	return pilha == NULL;
}
